Warsztaty Badawcze XIC

PD 3

Adrian Kamiński

Przygotowanie środowiska

Pobieramy zbiór Intel Image Classification z kaggle

I odpowiednio wczytujemy nasze dane (struktura root/train/label/*.jpg)

Widzimy, że mamy:

Oraz możemy sprawdzić, że wszystkie te zdjęcia mają wymiar 150x150.

Naszym zadaniem jest klasyfikacja zdjęcia do jednej z 6 klas:

Sprawdzamy czy mamy zrównoważone klasy (zarówno w zbiore testowym jak i treningowym)

Sprawdzamy czy udało się skutecznie wczytać nasz zbiór

Importujemy wytrenowany model ResNet 50

Wprowadzamy małe modyfikacje do architektury naszej sieci:

Do uczymy nasz zbiór na pobranych przez nas danych

Funkcje

Wizualizacja procesu uczenia

Sprawdźmy z jaką pewnością nasz model wybiera klasy (na zbiorze testowym)

Widzimy, że w większości przypadków jest on na 100% pewny swojego wyboru (co jest zaskakujące).

Wizualizacja zdjęć

Wybierzemy teraz po jednym obrazku z każdej z klas. I przedziemy wyjaśniania ich.

Wartość przedstawione zostały przeskalowane aby były lepiej widoczne na wykresie.

Możemy zauważyć parę rzeczy:

Analiza błędnie zaklasyfikowanych zdjęć

Sprawdzimy wyjaśnienia przy błędach które pojawiają się najczęściej

  1. glacier predicted as mountain
  2. mountain predicted as glacier
  3. street predicted as buildings
  4. buildings predicted as street

Widzimy, że błęd te można wybaczyć, przeważnie na zdjęciach występuje zarówno ulica jak i budynki.

Tak samo różnice pomiędzy górą a lodowcem są niewielkie

Wyjaśnienia dla prawidłowych klas

Sprawdźmy jak wyglądają wyjaśnienia błędnie przewidzianych klas.

W niektórych przypadków widać, że budynki zajmują większą część zdjęcia niż ulicę i to też widać na naszym wyjaśnieniu.

W przypadku gór i lodowców widzimy podobne rysy co mogło stanowić problem dla naszego modelu. Porównianie pokazuję, że kolor nieba lub pojawienie się śniegu na zdjęciu gór powodowało błędną decyzję.